package org.web.locks.databasedistributedlocks.server.domain.query;

import java.util.Date;
import java.util.Set;
import lombok.Getter;
import lombok.Setter;
import org.web.base.domain.QueryBase;

@Setter
@Getter
public class QueryDistributedLocks extends QueryBase {


    /**
     * 根据 'distributedLocksId' 精确查询, 'distributedLocksId' 表示业务标识，同时也是分布式锁表的主键，创建时，必须指定，由业务接入方提供。
     */
    private String distributedLocksId;

    /**
     * 设置 'distributedLocksId' 列表查询, 'distributedLocksId' 表示业务标识，同时也是分布式锁表的主键，创建时，必须指定，由业务接入方提供。
     */
    private Set < String > distributedLocksIdSet;

    /**
     * 设置大于 'lockExpiryTime' 查询, 'lockExpiryTime' 表示过期时间，单位毫秒，@Max(value = 300000,message = 最大值为5分钟}。 , groups = {InsertGroup.class, UpdateGroup.class})，@Min(value = 500,message = 最小值为500毫秒}。 , groups = {InsertGroup.class, UpdateGroup.class})
     */
    private Integer moreThanLockExpiryTime;

    /**
     * 设置小于 'lockExpiryTime' 查询, 'lockExpiryTime' 表示过期时间，单位毫秒，@Max(value = 300000,message = 最大值为5分钟}。 , groups = {InsertGroup.class, UpdateGroup.class})，@Min(value = 500,message = 最小值为500毫秒}。 , groups = {InsertGroup.class, UpdateGroup.class})
     */
    private Integer lessThanLockExpiryTime;

    /**
     * 设置大于等于 'lockExpiryTime' 查询, 'lockExpiryTime' 表示过期时间，单位毫秒，@Max(value = 300000,message = 最大值为5分钟}。 , groups = {InsertGroup.class, UpdateGroup.class})，@Min(value = 500,message = 最小值为500毫秒}。 , groups = {InsertGroup.class, UpdateGroup.class})
     */
    private Integer equalAndMoreThanLockExpiryTime;

    /**
     * 设置小于等于 'lockExpiryTime' 查询, 'lockExpiryTime' 表示过期时间，单位毫秒，@Max(value = 300000,message = 最大值为5分钟}。 , groups = {InsertGroup.class, UpdateGroup.class})，@Min(value = 500,message = 最小值为500毫秒}。 , groups = {InsertGroup.class, UpdateGroup.class})
     */
    private Integer equalAndLessThanLockExpiryTime;

    /**
     * 根据 'lockOwner' 精确查询, 'lockOwner' 表示拥有者，标记锁的拥有者，来源有两种，一种由接入方指定，另一种SDK默认实现。
     */
    private String lockOwner;

    /**
     * 设置大于 'updateAt' 查询, 'updateAt' 表示上锁修改时间，创建时，不需要指定，修改时，不需要指，
     */
    private Date moreThanUpdateAt;

    /**
     * 设置小于 'updateAt' 查询, 'updateAt' 表示上锁修改时间，创建时，不需要指定，修改时，不需要指，
     */
    private Date lessThanUpdateAt;

    /**
     * 设置大于等于 'updateAt' 查询, 'updateAt' 表示上锁修改时间，创建时，不需要指定，修改时，不需要指，
     */
    private Date equalAndMoreThanUpdateAt;

    /**
     * 设置小于等于 'updateAt' 查询, 'updateAt' 表示上锁修改时间，创建时，不需要指定，修改时，不需要指，
     */
    private Date equalAndLessThanUpdateAt;

    /**
     * 设置大于 'createAt' 查询, 'createAt' 表示上锁时间，创建时，无需指定，修改时，无需指定，由数据库时间自行创建。
     */
    private Date moreThanCreateAt;

    /**
     * 设置小于 'createAt' 查询, 'createAt' 表示上锁时间，创建时，无需指定，修改时，无需指定，由数据库时间自行创建。
     */
    private Date lessThanCreateAt;

    /**
     * 设置大于等于 'createAt' 查询, 'createAt' 表示上锁时间，创建时，无需指定，修改时，无需指定，由数据库时间自行创建。
     */
    private Date equalAndMoreThanCreateAt;

    /**
     * 设置小于等于 'createAt' 查询, 'createAt' 表示上锁时间，创建时，无需指定，修改时，无需指定，由数据库时间自行创建。
     */
    private Date equalAndLessThanCreateAt;

}
